 // 引入公共方法
const Common = require ('./common');
// 引入company表的model
const CompanyModel = require ('../models/company');
// 引入常量
const Constant = require ('../constant/constant');
// 引入dateformat包
const dateFormat = require ('dateformat');
// 配置对象
let exportObj = {
  info,
  update,
};
// 导出对象，供其它模块调用
module.exports = exportObj;


// 获取企业信息方法
function info (req, res) {
  // 定义一个返回对象
  const resObj = Common.clone (Constant.DEFAULT_SUCCESS);
  // 定义一个async任务
  let tasks = {
    // 查询方法，依赖校验参数方法
    query: cb => {
      // 使用company的model中的方法查询
      CompanyModel
        // 查询指定id为1的数据
        .findByPk (1)
        .then (function (result) {
          // 查询结果处理
          // 如果查询到结果
          if(result){
            // 将查询到的结果给返回对象赋值
            resObj.data = {
              id: result.id,
              name: result.name,
              address: result.address,
              tel: result.tel,
              intro: result.intro,
              longitude: result.longitude,
              latitude: result.latitude,
              createdAt: dateFormat (result.createdAt, 'yyyy-mm-dd HH:MM:ss')
            };
            // 继续后续操作
            cb(null);
          }else{
            // 查询失败，传递错误信息到async最终方法
            cb (Constant.COMPANY_INFO_NOT_EXSIT);
          }
        })
        .catch (function (err) {
          // 错误处理
          // 打印错误日志
          console.log (err);
          // 传递错误信息到async最终方法
          cb (Constant.DEFAULT_ERROR);
        });

    }
  };
  // 执行公共方法中的autoFn方法，返回数据
  Common.autoFn (tasks, res, resObj)
}

// 修改企业信息方法
function update (req, res) {
  // 定义一个返回对象
  const resObj = Common.clone (Constant.DEFAULT_SUCCESS);
  // 定义一个async任务
  let tasks = {
    // 校验参数方法
    checkParams: (cb) => {
      // 调用公共方法中的校验参数方法，成功继续后面操作，失败则传递错误信息到async最终方法
      Common.checkParams (req.body, ['name','address','tel','intro','longitude','latitude'], cb);
    },
    // 更新方法，依赖校验参数方法
    update: ['checkParams', (results, cb) => {
      // 使用company的model中的方法更新
      CompanyModel
        .update ({
          name: req.body.name,
          address: req.body.address,
          tel: req.body.tel,
          intro: req.body.intro,
          longitude: req.body.longitude,
          latitude: req.body.latitude,
        }, {
          // 查询id为1的数据进行更新
          where: {
            id: 1
          }
        })
        .then (function (result) {
          // 更新结果处理
          if(result[0]){
            // 如果更新成功
            // 继续后续操作
            cb (null);
          }else{
            // 更新失败，传递错误信息到async最终方法
            cb (Constant.COMPANY_INFO_NOT_EXSIT);
          }
        })
        .catch (function (err) {
          // 错误处理
          // 打印错误日志
          console.log (err);
          // 传递错误信息到async最终方法
          cb (Constant.DEFAULT_ERROR);
        });
    }]
  };
  // 执行公共方法中的autoFn方法，返回数据
  Common.autoFn (tasks, res, resObj)
}
